29 research outputs found
Models, Techniques, and Metrics for Managing Risk in Software Engineering
The field of Software Engineering (SE) is the study of systematic and quantifiable approaches to software development, operation, and maintenance. This thesis presents a set of scalable and easily implemented techniques for quantifying and mitigating risks associated with the SE process. The thesis comprises six papers corresponding to SE knowledge areas such as software requirements, testing, and management. The techniques for risk management are drawn from stochastic modeling and operational research.
The first two papers relate to software testing and maintenance. The first paper describes and validates novel iterative-unfolding technique for filtering a set of execution traces relevant to a specific task. The second paper analyzes and validates the applicability of some entropy measures to the trace classification described in the previous paper. The techniques in these two papers can speed up problem determination of defects encountered by customers, leading to improved organizational response and thus increased customer satisfaction and to easing of resource constraints.
The third and fourth papers are applicable to maintenance, overall software quality and SE management. The third paper uses Extreme Value Theory and Queuing Theory tools to derive and validate metrics based on defect rediscovery data. The metrics can aid the allocation of resources to service and maintenance teams, highlight gaps in quality assurance processes, and help assess the risk of using a given software product. The fourth paper characterizes and validates a technique for automatic selection and prioritization of a minimal set of customers for profiling. The minimal set is obtained using Binary Integer Programming and prioritized using a greedy heuristic. Profiling the resulting customer set leads to enhanced comprehension of user behaviour, leading to improved test specifications and clearer quality assurance policies, hence reducing risks associated with unsatisfactory product quality.
The fifth and sixth papers pertain to software requirements. The fifth paper both models the relation between requirements and their underlying assumptions and measures the risk associated with failure of the assumptions using Boolean networks and stochastic modeling. The sixth paper models the risk associated with injection of requirements late in development cycle with the help of stochastic processes
Architecture for Analysis of Streaming Data
While several attempts have been made to construct a scalable and flexible
architecture for analysis of streaming data, no general model to tackle this
task exists. Thus, our goal is to build a scalable and maintainable
architecture for performing analytics on streaming data.
To reach this goal, we introduce a 7-layered architecture consisting of
microservices and publish-subscribe software. Our study shows that this
architecture yields a good balance between scalability and maintainability due
to high cohesion and low coupling of the solution, as well as asynchronous
communication between the layers.
This architecture can help practitioners to improve their analytic solutions.
It is also of interest to academics, as it is a building block for a general
architecture for processing streaming data
On Testing Quantum Programs
A quantum computer (QC) can solve many computational problems more
efficiently than a classic one. The field of QCs is growing: companies (such as
DWave, IBM, Google, and Microsoft) are building QC offerings. We position that
software engineers should look into defining a set of software engineering
practices that apply to QC's software. To start this process, we give examples
of challenges associated with testing such software and sketch potential
solutions to some of these challenges.Comment: A condensed version to appear in Proceedings of the 41st
International Conference on Software Engineering (ICSE 2019
Anomaly Detection in Cloud Components
Cloud platforms, under the hood, consist of a complex inter-connected stack
of hardware and software components. Each of these components can fail which
may lead to an outage. Our goal is to improve the quality of Cloud services
through early detection of such failures by analyzing resource utilization
metrics. We tested Gated-Recurrent-Unit-based autoencoder with a likelihood
function to detect anomalies in various multi-dimensional time series and
achieved high performance.Comment: Accepted for publication in Proceedings of the IEEE International
Conference on Cloud Computing (CLOUD 2020). Fix dataset descriptio
Towards Automated Performance Bug Identification in Python
Context: Software performance is a critical non-functional requirement,
appearing in many fields such as mission critical applications, financial, and
real time systems. In this work we focused on early detection of performance
bugs; our software under study was a real time system used in the
advertisement/marketing domain.
Goal: Find a simple and easy to implement solution, predicting performance
bugs.
Method: We built several models using four machine learning methods, commonly
used for defect prediction: C4.5 Decision Trees, Na\"{\i}ve Bayes, Bayesian
Networks, and Logistic Regression.
Results: Our empirical results show that a C4.5 model, using lines of code
changed, file's age and size as explanatory variables, can be used to predict
performance bugs (recall=0.73, accuracy=0.85, and precision=0.96). We show that
reducing the number of changes delivered on a commit, can decrease the chance
of performance bug injection.
Conclusions: We believe that our approach can help practitioners to eliminate
performance bugs early in the development cycle. Our results are also of
interest to theoreticians, establishing a link between functional bugs and
(non-functional) performance bugs, and explicitly showing that attributes used
for prediction of functional bugs can be used for prediction of performance
bugs
Ordering Interrogative Questions for Effective Requirements Engineering: The W6H Pattern
Requirements elicitation and requirements analysis are important practices of
Requirements Engineering. Elicitation techniques, such as interviews and
questionnaires, rely on formulating interrogative questions and asking these in
a proper order to maximize the accuracy of the information being gathered.
Information gathered during requirements elicitation then has to be
interpreted, analyzed, and validated. Requirements analysis involves analyzing
the problem and solutions spaces. In this paper, we describe a method to
formulate interrogative questions for effective requirements elicitation based
on the lexical and semantic principles of the English language interrogatives,
and propose a pattern to organize stakeholder viewpoint concerns for better
requirements analysis. This helps requirements engineer thoroughly describe
problem and solutions spaces.
Most of the previous requirements elicitation studies included six out of the
seven English language interrogatives 'what', 'where', 'when', 'who', 'why',
and 'how' (denoted by W5H) and did not propose any order in the interrogatives.
We show that extending the set of six interrogatives with 'which' (denoted by
W6H) improves the generation and formulation of questions for requirements
elicitation and facilitates better requirements analysis via arranging
stakeholder views. We discuss the interdependencies among interrogatives (for
requirements engineer to consider while eliciting the requirements) and suggest
an order for the set of W6H interrogatives. The proposed W6H-based reusable
pattern also aids requirements engineer in organizing viewpoint concerns of
stakeholders, making this pattern an effective tool for requirements analysis